#ifndef __CLIENT_QUEUE__
#define __CLIENT_QUEUE__
#define CLIENT_NUM 50// 客户端表大小
#define TIME_SLICE 300// 300个时间片/格子
#include"standard_library.h"

typedef struct slotNode_s {//每个节点存一个客户端连接的fd
    int netfd;    //当前客户端连接的sockfd
    struct slotNode_s* next;//下一个客户端连接
} slotNode_t;

typedef struct slotList_s {//链表管理客户端的连接
    slotNode_t* head;
    slotNode_t* tail;
    int size;//连接数
} slotList_t;

typedef struct clientQueue_s{// 已连接客户队列
    int client[CLIENT_NUM];// 用于记录每个客户端的user_id
    slotList_t time_out[TIME_SLICE];// 循环队列
    int index[CLIENT_NUM];// 每个netFd当前在队列的位置，下标netfd对应
    int timer;// 记录该查询队列那个下标，初始为0
} clientQueue_t;



// 客户端队列的操作
int init_clientQueue(clientQueue_t *pclientQueue);
//将新的客户端连接netfd以尾插法添加到时间轮pclientQueue的指定槽位，并记录其位置和超时时间
int fdAdd(int netFd, clientQueue_t *pclientQueue);
//从时间轮pclientQueue中查找并删除指定的客户端连接netfd，释放对应节点内存并更新链表结构。
int fdDel(int netFd, clientQueue_t *pclientQueue);



#endif     

